// Generated from src/antlr/ArkcubeScript.g4 by ANTLR 4.9.0-SNAPSHOT


import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor";

import { ImportStatementContext } from "./ArkcubeScriptParser";
import { ViewStatementContext } from "./ArkcubeScriptParser";
import { VariableDeclStatementContext } from "./ArkcubeScriptParser";
import { FunctionDeclStatementContext } from "./ArkcubeScriptParser";
import { ControlStatementContext } from "./ArkcubeScriptParser";
import { ReturnStatementContext } from "./ArkcubeScriptParser";
import { ExprStatementContext } from "./ArkcubeScriptParser";
import { ArrayTypeContext } from "./ArkcubeScriptParser";
import { SimpleTypeContext } from "./ArkcubeScriptParser";
import { ModuleAliasContext } from "./ArkcubeScriptParser";
import { ModuleSymbolContext } from "./ArkcubeScriptParser";
import { ModuleSymbolAliasContext } from "./ArkcubeScriptParser";
import { ModuleAllSymbolContext } from "./ArkcubeScriptParser";
import { NumberContext } from "./ArkcubeScriptParser";
import { StringLiteralContext } from "./ArkcubeScriptParser";
import { BooleanLiteralContext } from "./ArkcubeScriptParser";
import { NameContext } from "./ArkcubeScriptParser";
import { ArrayIndexContext } from "./ArkcubeScriptParser";
import { MemberRangeContext } from "./ArkcubeScriptParser";
import { DimColonContext } from "./ArkcubeScriptParser";
import { MemberSetContext } from "./ArkcubeScriptParser";
import { PowerLikeContext } from "./ArkcubeScriptParser";
import { PrefixExpressionContext } from "./ArkcubeScriptParser";
import { MultiplyLikeContext } from "./ArkcubeScriptParser";
import { PlusLikeContext } from "./ArkcubeScriptParser";
import { ListLikeContext } from "./ArkcubeScriptParser";
import { CompareLikeContext } from "./ArkcubeScriptParser";
import { LogicLikeContext } from "./ArkcubeScriptParser";
import { PriorityExpressionContext } from "./ArkcubeScriptParser";
import { FunctionApplyContext } from "./ArkcubeScriptParser";
import { DotFunctionApplyContext } from "./ArkcubeScriptParser";
import { ProgramContext } from "./ArkcubeScriptParser";
import { StatContext } from "./ArkcubeScriptParser";
import { ImportStatContext } from "./ArkcubeScriptParser";
import { ViewStatContext } from "./ArkcubeScriptParser";
import { CellViewStatContext } from "./ArkcubeScriptParser";
import { CellEXViewStatContext } from "./ArkcubeScriptParser";
import { CellDBViewStatContext } from "./ArkcubeScriptParser";
import { VariableDeclContext } from "./ArkcubeScriptParser";
import { TypeContext } from "./ArkcubeScriptParser";
import { FunctionDeclContext } from "./ArkcubeScriptParser";
import { ParameterListContext } from "./ArkcubeScriptParser";
import { ParameterContext } from "./ArkcubeScriptParser";
import { BlockContext } from "./ArkcubeScriptParser";
import { IfStatContext } from "./ArkcubeScriptParser";
import { WhileStatContext } from "./ArkcubeScriptParser";
import { ReturnStatContext } from "./ArkcubeScriptParser";
import { ExprContext } from "./ArkcubeScriptParser";
import { FunctionCallContext } from "./ArkcubeScriptParser";
import { ArgumentsContext } from "./ArkcubeScriptParser";
import { DimContext } from "./ArkcubeScriptParser";


/**
 * This interface defines a complete generic visitor for a parse tree produced
 * by `ArkcubeScriptParser`.
 *
 * @param <Result> The return type of the visit operation. Use `void` for
 * operations with no return type.
 */
export interface ArkcubeScriptVisitor<Result> extends ParseTreeVisitor<Result> {
	/**
	 * Visit a parse tree produced by the `ImportStatement`
	 * labeled alternative in `ArkcubeScriptParser.stat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitImportStatement?: (ctx: ImportStatementContext) => Result;

	/**
	 * Visit a parse tree produced by the `ViewStatement`
	 * labeled alternative in `ArkcubeScriptParser.stat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitViewStatement?: (ctx: ViewStatementContext) => Result;

	/**
	 * Visit a parse tree produced by the `VariableDeclStatement`
	 * labeled alternative in `ArkcubeScriptParser.stat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitVariableDeclStatement?: (ctx: VariableDeclStatementContext) => Result;

	/**
	 * Visit a parse tree produced by the `FunctionDeclStatement`
	 * labeled alternative in `ArkcubeScriptParser.stat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitFunctionDeclStatement?: (ctx: FunctionDeclStatementContext) => Result;

	/**
	 * Visit a parse tree produced by the `ControlStatement`
	 * labeled alternative in `ArkcubeScriptParser.stat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitControlStatement?: (ctx: ControlStatementContext) => Result;

	/**
	 * Visit a parse tree produced by the `ReturnStatement`
	 * labeled alternative in `ArkcubeScriptParser.stat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitReturnStatement?: (ctx: ReturnStatementContext) => Result;

	/**
	 * Visit a parse tree produced by the `ExprStatement`
	 * labeled alternative in `ArkcubeScriptParser.stat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitExprStatement?: (ctx: ExprStatementContext) => Result;

	/**
	 * Visit a parse tree produced by the `ArrayType`
	 * labeled alternative in `ArkcubeScriptParser.type`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitArrayType?: (ctx: ArrayTypeContext) => Result;

	/**
	 * Visit a parse tree produced by the `SimpleType`
	 * labeled alternative in `ArkcubeScriptParser.type`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitSimpleType?: (ctx: SimpleTypeContext) => Result;

	/**
	 * Visit a parse tree produced by the `ModuleAlias`
	 * labeled alternative in `ArkcubeScriptParser.importStat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitModuleAlias?: (ctx: ModuleAliasContext) => Result;

	/**
	 * Visit a parse tree produced by the `ModuleSymbol`
	 * labeled alternative in `ArkcubeScriptParser.importStat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitModuleSymbol?: (ctx: ModuleSymbolContext) => Result;

	/**
	 * Visit a parse tree produced by the `ModuleSymbolAlias`
	 * labeled alternative in `ArkcubeScriptParser.importStat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitModuleSymbolAlias?: (ctx: ModuleSymbolAliasContext) => Result;

	/**
	 * Visit a parse tree produced by the `ModuleAllSymbol`
	 * labeled alternative in `ArkcubeScriptParser.importStat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitModuleAllSymbol?: (ctx: ModuleAllSymbolContext) => Result;

	/**
	 * Visit a parse tree produced by the `Number`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitNumber?: (ctx: NumberContext) => Result;

	/**
	 * Visit a parse tree produced by the `StringLiteral`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitStringLiteral?: (ctx: StringLiteralContext) => Result;

	/**
	 * Visit a parse tree produced by the `BooleanLiteral`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitBooleanLiteral?: (ctx: BooleanLiteralContext) => Result;

	/**
	 * Visit a parse tree produced by the `Name`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitName?: (ctx: NameContext) => Result;

	/**
	 * Visit a parse tree produced by the `ArrayIndex`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitArrayIndex?: (ctx: ArrayIndexContext) => Result;

	/**
	 * Visit a parse tree produced by the `MemberRange`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitMemberRange?: (ctx: MemberRangeContext) => Result;

	/**
	 * Visit a parse tree produced by the `DimColon`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitDimColon?: (ctx: DimColonContext) => Result;

	/**
	 * Visit a parse tree produced by the `MemberSet`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitMemberSet?: (ctx: MemberSetContext) => Result;

	/**
	 * Visit a parse tree produced by the `PowerLike`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitPowerLike?: (ctx: PowerLikeContext) => Result;

	/**
	 * Visit a parse tree produced by the `PrefixExpression`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitPrefixExpression?: (ctx: PrefixExpressionContext) => Result;

	/**
	 * Visit a parse tree produced by the `MultiplyLike`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitMultiplyLike?: (ctx: MultiplyLikeContext) => Result;

	/**
	 * Visit a parse tree produced by the `PlusLike`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitPlusLike?: (ctx: PlusLikeContext) => Result;

	/**
	 * Visit a parse tree produced by the `ListLike`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitListLike?: (ctx: ListLikeContext) => Result;

	/**
	 * Visit a parse tree produced by the `CompareLike`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitCompareLike?: (ctx: CompareLikeContext) => Result;

	/**
	 * Visit a parse tree produced by the `LogicLike`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitLogicLike?: (ctx: LogicLikeContext) => Result;

	/**
	 * Visit a parse tree produced by the `PriorityExpression`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitPriorityExpression?: (ctx: PriorityExpressionContext) => Result;

	/**
	 * Visit a parse tree produced by the `FunctionApply`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitFunctionApply?: (ctx: FunctionApplyContext) => Result;

	/**
	 * Visit a parse tree produced by the `DotFunctionApply`
	 * labeled alternative in `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitDotFunctionApply?: (ctx: DotFunctionApplyContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.program`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitProgram?: (ctx: ProgramContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.stat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitStat?: (ctx: StatContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.importStat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitImportStat?: (ctx: ImportStatContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.viewStat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitViewStat?: (ctx: ViewStatContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.cellViewStat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitCellViewStat?: (ctx: CellViewStatContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.cellEXViewStat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitCellEXViewStat?: (ctx: CellEXViewStatContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.cellDBViewStat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitCellDBViewStat?: (ctx: CellDBViewStatContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.variableDecl`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitVariableDecl?: (ctx: VariableDeclContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.type`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitType?: (ctx: TypeContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.functionDecl`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitFunctionDecl?: (ctx: FunctionDeclContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.parameterList`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitParameterList?: (ctx: ParameterListContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.parameter`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitParameter?: (ctx: ParameterContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.block`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitBlock?: (ctx: BlockContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.ifStat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitIfStat?: (ctx: IfStatContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.whileStat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitWhileStat?: (ctx: WhileStatContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.returnStat`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitReturnStat?: (ctx: ReturnStatContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.expr`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitExpr?: (ctx: ExprContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.functionCall`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitFunctionCall?: (ctx: FunctionCallContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.arguments`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitArguments?: (ctx: ArgumentsContext) => Result;

	/**
	 * Visit a parse tree produced by `ArkcubeScriptParser.dim`.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	visitDim?: (ctx: DimContext) => Result;
}

